package datos;

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 *
 * @author Aiskel
 */
import java.util.*;


public class ListaUsuario
{
    private Set <Usuario> miSet;
    private Comparator compararNickname;
    public ListaUsuario()
    {
        /*
         * Se inicializa el comparador con el constructor de la clase
         * CompararNickname y se inicializa el TreeSet con este comparador,
         * para poder establecer el criterio de ordenamiento de la colecciÃ³n
         */
        compararNickname = new CompararNickname();
             miSet = new TreeSet(compararNickname);
        
     }
     public Iterator getIterator()
     {
        return miSet.iterator();
     }

    /**
     *
     * MÃ©todo public void imprimirColeccion(): Este mÃ©todo imprime el
     * contenido de la colecciÃ³n miSet
     */
    public void imprimirColeccion()
    {
        int i;
        Usuario registro;
        /*
         * Se define un arreglo de tipo Object (la clase genÃ©rica Java)
         */
        Object [] arreglo;
        /*
         * Se convierte la colecciÃ³n pasada como parÃ¡metro a un array, que
         * es asignado al arreglo de tipo Object
         */
        arreglo = miSet.toArray();
        System.out.println("DATOS");
        /*
         * Se hace un recorrido del arreglo de tipo Object y se imprime
         * la informaciÃ³n de la casilla i
         */
        for(i=0 ; i<arreglo.length ; i++)
        {
            registro = (Usuario) arreglo[i];
            System.out.println(registro);
        }
        System.out.println("\n");
    }


    /**
     *
     * MÃ©todo public boolean agregarElemento(Nodo objeto): Este mÃ©todo agrega
     * el Nodo "objeto" a la colecciÃ³n miSet
     */
    public boolean agregarElemento(Usuario objeto)
    {
        return miSet.add(objeto);
    }


    /**
     *
     * MÃ©todo public boolean removerElemento(Nodo objeto): Este mÃ©todo elimina
     * el Nodo "objeto" de la colecciÃ³n miSet
     */
    public boolean removerElemento(Usuario objeto)
    {
        boolean encontrado = false;
        Usuario auxiliar = null;

        /*
         * Se define un iterador inicializado con el iterador de la colecciÃ³n
         */
        Iterator iterador = miSet.iterator();

        /*
         * Mientras no se encuentre el elemento y existan mas elementos en la
         * colecciÃ³n, se sigue entrando en el ciclo
         */
        while (!encontrado && iterador.hasNext())
        {
            /*
             *  Se obtiene el siguiente objeto del iterador y se le hace un cast
             *  para asignarlo al objeto de tipo Nodo
             */
            auxiliar = (Usuario) iterador.next();

            /*
             * Se invoca al mÃ©todo equals de la clase Nodo para determinar si son
             * iguales. En caso de serlo, se encontrÃ³ el elemento buscado
             */
            if (objeto.equals(auxiliar))
                encontrado = true;
        }

        /*
         * Si se encontrÃ³ el elemento, se procede a ejecutar el remove
         */
        if (encontrado)
        {
            if (miSet.remove(auxiliar))
                return true;
        }

        return false;
    }

    public boolean RecorrerLista(Object objeto)
    {
        boolean control = false;
        Usuario aux,aux2 = null;

        Iterator iterador = miSet.iterator();
        aux2 = (Usuario) objeto;
        // System.out.println("-->El elementooo es--->\n" + aux2.getNickname());
        while (!control && iterador.hasNext())
        {
           // System.out.println("Entrooooo\n");
            aux = (Usuario) iterador.next();
            if (objeto.equals(aux))
            {
                //System.out.println("-->El elementooo esta repetidoooo\n" + aux.getNickname());
                return true;
            }
        }

     return false;
    }


    public Usuario RecorrerListaUsuario(Object objeto)//Le paso el nickname para saber donde ando
    {
        boolean control = false;
        Usuario aux= null;

        Iterator iterador = miSet.iterator();

        // System.out.println("-->El elementooo es--->\n" + aux2.getNickname());
        while (!control && iterador.hasNext())
        {
        // System.out.println("Entrooooo\n");
        aux = (Usuario) iterador.next();
        if (objeto.equals(aux.getNickname()))
        {
        //System.out.println("-->El elementooo esta repetidoooo\n" + aux.getNickname());
        return aux;
        }
        }
        return aux;
    }

        public Usuario devolverIconoUsuario(Usuario elNodo)
    {
        Usuario    auxiliar = null;
        boolean encontrado = false;

        Iterator elIterador = miSet.iterator();

        while (!encontrado && elIterador.hasNext())
        {
            auxiliar = (Usuario) elIterador.next();

            if (elNodo.equals(auxiliar))
                encontrado = true;
        }

        return auxiliar;
    }

}
